#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(int argc, char const *argv[])
{
    printf("父进程开始执行 \n");

    pid_t pid = fork();
    if (pid > 0) // 父进程
    {
        int subp_status;
        printf("父进程接着执行中... \n");
        // 注意：只能父等子
        waitpid(pid, &subp_status, 0);
        printf("父进程得到子进程结束返回的状态值：%d \n", subp_status);
    }
    else if (pid == 0) // 子进程
    {
        printf("子进程开始执行, 准备运行ping命令 \n");  // ping -c 10 www.atguigu.com
        char *argv[] = {"/bin/ping", "-c", "5", "www.atguigu.com", NULL};
        char *envp[] = {NULL};
        execve(argv[0], argv, envp);
    }

    printf("父进程即将执行结束 \n");

    return 0;
}